জাভাস্ক্রিপ্ট অ্যারে ইটারেশন (JS Array Iteration)

Web Development - জাভাস্ক্রিপ্ট (JavaScript) জাভাস্ক্রিপ্ট স্ট্রিং এবং অ্যারে (JS String & Array) |
353
353

জাভাস্ক্রিপ্টে অ্যারে ইটারেশন হলো একটি প্রক্রিয়া যার মাধ্যমে অ্যারের প্রতিটি উপাদানকে একে একে প্রসেস করা হয়। ইটারেশন ব্যবহার করে আমরা অ্যারের উপাদানগুলোর উপর বিভিন্ন ধরনের অপারেশন করতে পারি, যেমন ফিল্টার করা, ম্যাপ করা, রিডিউস করা ইত্যাদি। জাভাস্ক্রিপ্টে বিভিন্ন ইটারেশন মেথড রয়েছে, যা কোডকে আরও পরিচ্ছন্ন এবং কার্যকর করে তোলে।


সাধারণ ইটারেশন পদ্ধতি

for লুপ

for লুপ হলো জাভাস্ক্রিপ্টের সবচেয়ে প্রচলিত ইটারেশন পদ্ধতি। এটি অ্যারের প্রতিটি উপাদানকে নির্দিষ্ট সংখ্যক বার প্রসেস করার জন্য ব্যবহৃত হয়।

let fruits = ["Apple", "Banana", "Cherry"];

for (let i = 0; i < fruits.length; i++) {
    console.log(fruits[i]);
}

// আউটপুট:
// Apple
// Banana
// Cherry

for...of লুপ

for...of লুপ ES6 থেকে পরিচিত এবং এটি অ্যারের প্রতিটি উপাদানের উপর সরাসরি ইটারেট করতে ব্যবহৃত হয়। এটি কোডকে আরও সংক্ষিপ্ত এবং পাঠযোগ্য করে তোলে।

let fruits = ["Apple", "Banana", "Cherry"];

for (let fruit of fruits) {
    console.log(fruit);
}

// আউটপুট:
// Apple
// Banana
// Cherry

for...in লুপ

for...in লুপ মূলত অবজেক্টের প্রপার্টি ইটারেট করার জন্য ব্যবহৃত হয়, কিন্তু এটি অ্যারেগুলিতেও ব্যবহার করা যেতে পারে। তবে, অ্যারেগুলির জন্য এটি সাধারণত সুপারিশ করা হয় না, কারণ এটি ইনডেক্স ছাড়া অন্যান্য প্রপার্টি ইটারেট করতে পারে।

let fruits = ["Apple", "Banana", "Cherry"];

for (let index in fruits) {
    console.log(index, fruits[index]);
}

// আউটপুট:
// 0 Apple
// 1 Banana
// 2 Cherry

উচ্চ-স্তরের ইটারেশন মেথড

forEach()

forEach() মেথড অ্যারের প্রতিটি উপাদানের উপর নির্দিষ্ট একটি ফাংশন চালায়। এটি মূলত অ্যারের জন্য ব্যবহৃত হয় এবং কোনো রিটার্ন ভ্যালু থাকে না।

let fruits = ["Apple", "Banana", "Cherry"];

fruits.forEach(function(fruit) {
    console.log(fruit);
});

// আউটপুট:
// Apple
// Banana
// Cherry

map()

map() মেথড অ্যারের প্রতিটি উপাদানের উপর নির্দিষ্ট একটি ফাংশন চালায় এবং নতুন একটি অ্যারে রিটার্ন করে, যেখানে প্রতিটি উপাদান হলো ফাংশনের রিটার্ন ভ্যালু।

let numbers = [1, 2, 3, 4];
let squared = numbers.map(function(number) {
    return number * number;
});

console.log(squared);  // আউটপুট: [1, 4, 9, 16]

filter()

filter() মেথড অ্যারের প্রতিটি উপাদানের উপর নির্দিষ্ট একটি ফাংশন চালায় এবং একটি নতুন অ্যারে রিটার্ন করে, যেখানে শুধুমাত্র সেই উপাদানগুলো থাকে যা ফাংশনটি true রিটার্ন করেছে।

let numbers = [1, 2, 3, 4, 5, 6];
let evenNumbers = numbers.filter(function(number) {
    return number % 2 === 0;
});

console.log(evenNumbers);  // আউটপুট: [2, 4, 6]

reduce()

reduce() মেথড একটি অ্যারের সব উপাদানকে একত্রিত করে একটি একক মানে রূপান্তরিত করে। এটি দুটি প্যারামিটার গ্রহণ করে: একটি রিডিউসিং ফাংশন এবং একটি আক্রমণাত্মক মান।

let numbers = [1, 2, 3, 4];
let sum = numbers.reduce(function(accumulator, currentValue) {
    return accumulator + currentValue;
}, 0);

console.log(sum);  // আউটপুট: 10

some()

some() মেথড চেক করে যদি অ্যারের কোন একটি উপাদান নির্দিষ্ট শর্ত পূরণ করে। যদি হয়, তবে এটি true রিটার্ন করে; অন্যথায়, false

let numbers = [1, 2, 3, 4, 5];
let hasEven = numbers.some(function(number) {
    return number % 2 === 0;
});

console.log(hasEven);  // আউটপুট: true

every()

every() মেথড চেক করে যদি অ্যারের সব উপাদান নির্দিষ্ট শর্ত পূরণ করে। যদি সবগুলোই পূরণ করে, তবে এটি true রিটার্ন করে; অন্যথায়, false

let numbers = [2, 4, 6, 8];
let allEven = numbers.every(function(number) {
    return number % 2 === 0;
});

console.log(allEven);  // আউটপুট: true

find()

find() মেথড প্রথম উপাদানটি রিটার্ন করে যা নির্দিষ্ট শর্ত পূরণ করে। যদি কোনো উপাদান না থাকে, তবে এটি undefined রিটার্ন করে।

let numbers = [1, 2, 3, 4, 5];
let firstEven = numbers.find(function(number) {
    return number % 2 === 0;
});

console.log(firstEven);  // আউটপুট: 2

findIndex()

findIndex() মেথড প্রথম উপাদানের ইনডেক্স রিটার্ন করে যা নির্দিষ্ট শর্ত পূরণ করে। যদি কোনো উপাদান না থাকে, তবে এটি -1 রিটার্ন করে।

let numbers = [1, 2, 3, 4, 5];
let firstEvenIndex = numbers.findIndex(function(number) {
    return number % 2 === 0;
});

console.log(firstEvenIndex);  // আউটপুট: 1

অন্যান্য ইটারেশন মেথড

entries(), keys(), values()

এই মেথডগুলো অ্যারের ইটারেটর তৈরি করে যা for...of লুপে ব্যবহার করা যেতে পারে।

let fruits = ["Apple", "Banana", "Cherry"];

// entries()
for (let [index, fruit] of fruits.entries()) {
    console.log(index, fruit);
}
// আউটপুট:
// 0 Apple
// 1 Banana
// 2 Cherry

// keys()
for (let index of fruits.keys()) {
    console.log(index);
}
// আউটপুট:
// 0
// 1
// 2

// values()
for (let fruit of fruits.values()) {
    console.log(fruit);
}
// আউটপুট:
// Apple
// Banana
// Cherry

ইটারেশন মেথডের তুলনা

মেথডকীভাবে কাজ করেরিটার্ন ভ্যালু
forনির্দিষ্ট সংখ্যক বার লুপ করেকোনো কিছু রিটার্ন করে না
forEachপ্রতিটি উপাদানের উপর ফাংশন চালায়undefined
mapপ্রতিটি উপাদানের উপর ফাংশন চালায় এবং নতুন অ্যারে তৈরি করেনতুন অ্যারে
filterনির্দিষ্ট শর্ত পূরণকারী উপাদানগুলোকে ফিল্টার করেনতুন অ্যারে
reduceসব উপাদানকে একত্রিত করে একটি মান তৈরি করেএকক মান
someকোনো এক উপাদান নির্দিষ্ট শর্ত পূরণ করে কিনা চেক করেtrue বা false
everyসব উপাদান নির্দিষ্ট শর্ত পূরণ করে কিনা চেক করেtrue বা false
findপ্রথম উপাদান যা শর্ত পূরণ করে তা রিটার্ন করেউপাদান বা undefined
findIndexপ্রথম উপাদানের ইনডেক্স যা শর্ত পূরণ করে তা রিটার্ন করেইনডেক্স বা -1

কখন কোন মেথড ব্যবহার করবেন

  • for লুপ: যখন আপনাকে নির্দিষ্ট সংখ্যক বার লুপ করতে হবে বা ইটারেশন কন্ট্রোল করতে হবে।
  • forEach: যখন আপনাকে প্রতিটি উপাদানের উপর কোনো সাইড ইফেক্ট চালাতে হবে।
  • map: যখন আপনাকে প্রতিটি উপাদানের ওপর কোনো রূপান্তর করতে হবে এবং নতুন অ্যারে তৈরি করতে হবে।
  • filter: যখন আপনাকে নির্দিষ্ট শর্ত পূরণকারী উপাদানগুলো ফিল্টার করতে হবে।
  • reduce: যখন আপনাকে অ্যারের সব উপাদানকে একত্রিত করে একটি মান তৈরি করতে হবে।
  • some: যখন আপনাকে জানতে হবে অ্যারেতে কোনো উপাদান নির্দিষ্ট শর্ত পূরণ করছে কিনা।
  • every: যখন আপনাকে নিশ্চিত করতে হবে অ্যারেতে সব উপাদান নির্দিষ্ট শর্ত পূরণ করছে।
  • find: যখন আপনাকে প্রথম উপাদানটি খুঁজে বের করতে হবে যা শর্ত পূরণ করে।
  • findIndex: যখন আপনাকে প্রথম উপাদানের ইনডেক্স খুঁজে বের করতে হবে যা শর্ত পূরণ করে।

উদাহরণসমূহ

১. ম্যাপিং

একটি নামের অ্যারেকে বড় হাতের অক্ষরে রূপান্তর করা।

let names = ["alice", "bob", "charlie"];
let upperNames = names.map(function(name) {
    return name.toUpperCase();
});

console.log(upperNames);  // আউটপুট: ["ALICE", "BOB", "CHARLIE"]

২. ফিল্টারিং

একটি সংখ্যার অ্যারেতে জোড় সংখ্যা ফিল্টার করা।

let numbers = [1, 2, 3, 4, 5, 6];
let evenNumbers = numbers.filter(function(number) {
    return number % 2 === 0;
});

console.log(evenNumbers);  // আউটপুট: [2, 4, 6]

৩. রিডিউসিং

একটি সংখ্যার অ্যারের সমষ্টি হিসাব করা।

let numbers = [1, 2, 3, 4];
let total = numbers.reduce(function(accumulator, currentValue) {
    return accumulator + currentValue;
}, 0);

console.log(total);  // আউটপুট: 10

৪. ফাইন্ডিং

একটি অ্যারেতে প্রথম বড় সংখ্যাটি খুঁজে বের করা।

let numbers = [1, 3, 7, 2, 9, 4];
let firstLarge = numbers.find(function(number) {
    return number > 5;
});

console.log(firstLarge);  // আউটপুট: 7

৫. for...of লুপ ব্যবহার

একটি অ্যারেতে প্রতিটি উপাদানকে প্রিন্ট করা।

let fruits = ["Apple", "Banana", "Cherry"];

for (let fruit of fruits) {
    console.log(fruit);
}

// আউটপুট:
// Apple
// Banana
// Cherry

সারাংশ

জাভাস্ক্রিপ্টে অ্যারে ইটারেশন বিভিন্ন ধরনের মেথড এবং লুপের মাধ্যমে করা যায়, যা কোডকে আরও কার্যকর, পরিচ্ছন্ন এবং রক্ষণাবেক্ষণযোগ্য করে তোলে। প্রতিটি ইটারেশন মেথডের নিজস্ব সুবিধা এবং ব্যবহার ক্ষেত্র রয়েছে, যা নির্ভর করে আপনাকে কী করতে হবে তার উপর। সঠিক মেথড নির্বাচন করে আপনি আপনার কোডের কার্যকারিতা এবং মান উন্নত করতে পারেন।


অতিরিক্ত রিসোর্স


চেকলিস্ট

  • অ্যারে ইটারেশন কি এবং কেন প্রয়োজনীয় তা বোঝা
  • বিভিন্ন ইটারেশন মেথডের সিনট্যাক্স এবং ব্যবহার শিখা
  • প্রতিটি মেথডের সুবিধা ও সীমাবদ্ধতা বুঝা
  • বাস্তব জীবনের উদাহরণ দিয়ে মেথডগুলোর কার্যকারিতা পরীক্ষা করা

টিপস

  • কোড লিখার সময় ইটারেশন মেথডগুলোকে সংক্ষিপ্ত এবং পরিষ্কার রাখতে চেষ্টা করুন।
  • প্রয়োজন অনুযায়ী উপযুক্ত ইটারেশন মেথড নির্বাচন করুন।
  • ডিবাগিংয়ের সময় console.log() এর সাথে স্পষ্ট বার্তা ব্যবহার করুন, যেন কোন ধাপে কি ঘটছে তা সহজে বোঝা যায়।

সাধারণ প্রশ্ন (FAQ)

forEach এবং map মধ্যে পার্থক্য কী?

forEach কোনো নতুন অ্যারে রিটার্ন করে না, এটি শুধুমাত্র প্রতিটি উপাদানের উপর ফাংশন চালায়। অন্যদিকে, map প্রতিটি উপাদানের রিটার্ন ভ্যালু নিয়ে একটি নতুন অ্যারে তৈরি করে।

for...of লুপ কেন for...in লুপের তুলনায় ভালো?

for...of লুপ অ্যারের প্রতিটি উপাদানের মান সরাসরি রিটার্ন করে, যেখানে for...in লুপ অ্যারের ইনডেক্স বা কী রিটার্ন করে। এছাড়া, for...in লুপ অ্যারের প্রপার্টি ওভারহেড থাকতে পারে, যা অ্যারের জন্য অপ্রয়োজনীয়।

reduce মেথড কবে ব্যবহার করা উচিত?

যখন আপনাকে অ্যারের সব উপাদানকে একত্রিত করে একটি একক মান তৈরি করতে হয়, যেমন সমষ্টি, গড়, বা কোনো জটিল অবজেক্ট তৈরির জন্য reduce মেথড ব্যবহার করা উচিত।


সারাংশ

জাভাস্ক্রিপ্টে অ্যারে ইটারেশন বিভিন্ন পদ্ধতি ব্যবহার করে করা যায়, যা ডেভেলপারদের কোডকে আরও কার্যকর এবং রক্ষণাবেক্ষণযোগ্য করে তোলে। প্রতিটি মেথডের নিজস্ব সুবিধা এবং ব্যবহার ক্ষেত্র রয়েছে, যা নির্ভর করে আপনার নির্দিষ্ট চাহিদার উপর। সঠিক মেথড নির্বাচন এবং ব্যবহার শিখলে আপনার জাভাস্ক্রিপ্ট কোডিং দক্ষতা আরও বৃদ্ধি পাবে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion